/**
 * 自定义 Promise 实现
 * 模拟原生 Promise 的行为
 */
class MyPromise {
  /**
   * 构造函数
   * @param {Function} executor - 执行器函数
   */
  constructor(executor) {
    // TODO: 实现 Promise 构造函数
  }

  /**
   * then 方法
   * @param {Function} onFulfilled - 成功回调
   * @param {Function} onRejected - 失败回调
   * @returns {MyPromise} 新的 Promise 实例
   */
  then(onFulfilled, onRejected) {
    // TODO: 实现 then 方法
  }

  /**
   * catch 方法
   * @param {Function} onRejected - 失败回调
   * @returns {MyPromise} 新的 Promise 实例
   */
  catch(onRejected) {
    // TODO: 实现 catch 方法
  }

  /**
   * finally 方法
   * @param {Function} onFinally - 最终回调
   * @returns {MyPromise} 新的 Promise 实例
   */
  finally(onFinally) {
    // TODO: 实现 finally 方法
  }

  /**
   * 静态方法：创建已解决的 Promise
   * @param {any} value - 解决值
   * @returns {MyPromise} 已解决的 Promise
   */
  static resolve(value) {
    // TODO: 实现 resolve 静态方法
  }

  /**
   * 静态方法：创建已拒绝的 Promise
   * @param {any} reason - 拒绝原因
   * @returns {MyPromise} 已拒绝的 Promise
   */
  static reject(reason) {
    // TODO: 实现 reject 静态方法
  }

  /**
   * 静态方法：等待所有 Promise 完成
   * @param {Array} promises - Promise 数组
   * @returns {MyPromise} 包含所有结果的 Promise
   */
  static all(promises) {
    // TODO: 实现 all 静态方法
  }

  /**
   * 静态方法：等待第一个 Promise 完成
   * @param {Array} promises - Promise 数组
   * @returns {MyPromise} 第一个完成的 Promise
   */
  static race(promises) {
    // TODO: 实现 race 静态方法
  }

  /**
   * 静态方法：等待所有 Promise 完成（无论成功或失败）
   * @param {Array} promises - Promise 数组
   * @returns {MyPromise} 包含所有结果的 Promise
   */
  static allSettled(promises) {
    // TODO: 实现 allSettled 静态方法
  }

  /**
   * 静态方法：等待第一个成功的 Promise
   * @param {Array} promises - Promise 数组
   * @returns {MyPromise} 第一个成功的 Promise
   */
  static any(promises) {
    // TODO: 实现 any 静态方法
  }
}

module.exports = MyPromise
